package main

import (
	"encoding/json"
	"fmt"
)

/*
学生信息系统添加，无限次数添加和查询，按q退出
1、添加学生信息
	判断此用户有没有添加过
	没有用户就提示输入学生信息（姓名，年龄，性别，住址）
2、查询学生信息
	按名字查询 判断输入的名字有没有添加过，有就输出信息，没有就提示没有添加过
	json map转换成json  字符串json转map 信息固化
*/

func main() {
	stuinfo := map[string]map[string]string{
		"pan": {
			"age":     "20",
			"sex":     "女",
			"address": "常德",
		},
		"zhou": {
			"age":     "28",
			"sex":     "男",
			"address": "宁乡",
		},
		"huang": {
			"age":     "21",
			"sex":     "女",
			"address": "衡阳",
		},
		"wang": {
			"age":     "15",
			"sex":     "男",
			"address": "娄底",
		},
		"bao": {
			"age":     "22",
			"sex":     "女",
			"address": "邵阳",
		},
	}
	for {
		fmt.Println("1:添加学生信息  2:查询学生信息 q:退出系统")
		var choice string
		fmt.Scanln(&choice)
		switch choice {
		case "1":
			fmt.Println("开始添加学生信息")
			var name, age, sex, address string
			fmt.Print("请输入学生姓名 年龄 性别 住址: ")
			_, _ = fmt.Scanln(&name, &age, &sex, &address)
			if _, exists := stuinfo[name]; exists {
				fmt.Println("该学生已存在，请勿重复添加")
			} else {
				// 添加学生信息，而不是整个 newStudent 字典
				stuinfo[name] = map[string]string{
					"age":     age,
					"sex":     sex,
					"address": address,
				}
				fmt.Println("添加成功")
			}
			fmt.Println(stuinfo)
		case "2":
			fmt.Println("开始查询学生信息,请输入要查询的学生姓名")
			var name string
			fmt.Scanln(&name)
			value, ok := stuinfo[name]
			if ok {
				fmt.Println(value)
			} else {
				fmt.Println("该学生不存在，请先添加")
			}
		case "q":
			fmt.Println("退出系统")
			return
		}
	}
}
func toJSON(stuinfo map[string]string) ([]byte, error) {
	jsonBytes, err := json.Marshal(stuinfo)
	if err != nil {
		return nil, err
	}
	return jsonBytes, nil
}
func fromJSON(jsonString string) (map[string]*string, error) {
	var stuinfo map[string]*string
	err := json.Unmarshal([]byte(jsonString), &stuinfo)
	if err != nil {
		return nil, err
	}
	return stuinfo, nil
}
